

#ifndef Tips_h
#define Tips_h


#endif /* Tips_h */




> 什么是 document-based 应用程序?
>> 可以打开多个文档的应用程序.如文本编辑 


> Document 负责文件的读写工作

> 本例子通过NSArrayController和绑定来构建简单的用户界面。不用添加任何代码到Document文件


> "步骤"
> 1. 新建person类，继承自 'NSObject'

> 2. 'Document'新增 'employees'可变字典,存储 person

> 3. 编辑 'Document.xib',添加按钮和tableView(tableView的contentMode为'Cell Based')

> 4. 打开'Document.xib',拖拽'NSArrayController'到编辑区域。

> 5. 'NSArrayController'的 Attribute Inspector 下的 Object Controller 设置model -> class , className -> 'Person' ,keys ->  "personName"  "expectedRaise"

> 6. 选中'NSArrayController'切换到Bindings Inspector(图标有点像回字)，点击 content Array 展开。 点击bind to ,选中 File‘s owener, 保持 Controller key 为空白 。在model key path 中输入'employees' .  此时就将array 控制器的content Array 绑定到File‘s owener的employees队列上了。

> 7. 绑定表格视图的列。 value ——> bindTo Array Controller; controller key -> arrangedObjects ; model key path ->  "personName"

> 8. 按钮绑定键盘键：'Key Equivalent' ; （记得按钮绑定NSArrayController的操作）



> "保存和读取"

1. 打开一个文件时, '文档对象将在读取NIB文件之前读取文档文件'。因此，载入文件时，程序不会立即发送消息给用户界面（因为现在还不存在）,为了解决这个问题，在nib读取后，文档对象将会发送如下消息 :
    - (void)windowControllerDidLoadNib:(NSWindowController *)windowController
   用户可以用这个方法刷新界面

2. 如果用户选择的是'Revert to Saved'菜单 ，模型被加载，但是不会调用 -windowControllerDidLoadNib: . 因此: 如果是恢复操作,开发者还需要在载入数据的过程中更新用户界面对象. 解决的办法是检查IBOutlet ,如果是nil ,就没有被载入，不必更新用户界面了



> "需要NSWindoController的场景"

1. 一个文档需要多个窗口.
2. 需要把用户界面控制器逻辑和模型控制器逻辑放到不同的类中
3. 需要传建一个么有对应NSDocument对象的窗口



> "为文件类型添加扩展名和图标"

1. 创建工程时候已经给了扩展名 .rsmn , 这是创建工程的时候配置的。 但是.rsmn需要一个图标

2. 拖入 .icns 文件。  配置 info



> '使之能自动保存'
> Document :   - autosavesInPlace


> '跟踪文档有多少个更改产生'
- (void)updateChangeCount:(NSDocumentChangeType)change






















